//
//  CTCollectionViewColumnLayoutDefines.h
//
//  Created by Andney Jack on 2021/6/2.
//

#ifndef CTCollectionViewColumnLayoutDefines_h
#define CTCollectionViewColumnLayoutDefines_h

#import <UIKit/UIKit.h>
@class CTCollectionViewColumnLayout;

extern NSString *const CTCollectionElementKindSectionHeader;
extern NSString *const CTCollectionElementKindSectionFooter;

typedef NS_ENUM (NSUInteger, CTCollectionViewItemRenderDirection) {
    CTCollectionViewItemRenderDirectionShortestFirst,
    CTCollectionViewItemRenderDirectionLeftToRight,
    CTCollectionViewItemRenderDirectionRightToLeft,
    CTCollectionViewItemRenderDirectionColumnFirst,
};

@protocol CTCollectionViewDelegateColumnLayout <UICollectionViewDelegate>

@required

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout sizeForItemAtIndexPath:(NSIndexPath *)indexPath columnWidth:(CGFloat)columnWidth;

@optional

- (NSInteger)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout columnCountForSection:(NSInteger)section;

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout heightForHeaderInSection:(NSInteger)section;
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout heightForFooterInSection:(NSInteger)section;

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout insetForSectionAtIndex:(NSInteger)section;
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout insetForHeaderInSection:(NSInteger)section;
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout insetForFooterInSection:(NSInteger)section;

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout interitemSpacingForSectionAtIndex:(NSInteger)section;
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout columnSpacingForSectionAtIndex:(NSInteger)section;

- (CTCollectionViewItemRenderDirection)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout itemRenderDirectionForSectionAtIndex:(NSInteger)section;

// Header、Footer悬浮效果
- (BOOL)collectionView:(UICollectionView *)collectionView layout:(CTCollectionViewColumnLayout *)layout shouldPinToVisibleBoundsForSupplementaryViewOfKind:(NSString *)kind atSection:(NSInteger)section;

@end

#endif /* CTCollectionViewColumnLayoutDefines_h */
